package com.by.wx.utils;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.json.JSONUtil;
import com.by.wx.model.script.CsGenDto;
import com.by.wx.model.script.CsTask;
import com.by.wx.vo.script.CsGenRunVo;

import java.util.Map;

/**
 * 脚本工具类
 * @ClassName CsAirScriptUtils
 * @Date 2025/1/2
 * @Author Blue
 */
public class CsAirScriptUtils {

    /**
     * 构建-生成脚本-参数对象
     * @param genRunVo 生成脚本并运行-订阅-参数对象
     * @return 生成脚本-参数对象
     */
    public static CsGenDto buildGenDto(CsGenRunVo genRunVo) {
        if (ObjUtil.isEmpty(genRunVo)) {
            return null;
        }
        return CsGenDto.builder()
                .id(354)
                .params(
                        JSONUtil.toJsonStr(
                                CsGenDto.CsGenParams.builder()
                                        .urlList_0("https://www.csair.com/cn/index.shtml")
                                        .inputText_1("13662634110")
                                        .inputText_2(genRunVo.getDate())
                                        .inputText_3(genRunVo.getDeparture())
                                        .inputText_4(genRunVo.getArrival())
                                        .build()
                        )
                )
                .build();

    }

    /**
     * 构建-生成脚本-参数对象
     * @param genRunVo 生成脚本并运行-订阅-参数对象
     * @return 生成脚本-参数对象-JSON
     */
    public static String buildGenBodyToJsonStr(CsGenRunVo genRunVo) {
        return JSONUtil.toJsonStr(buildGenDto(genRunVo));
    }

    /**
     * 构建-生成脚本-参数对象
     * @param genRunVo 生成脚本并运行-订阅-参数对象
     * @return 生成脚本-参数对象-Map
     */
    public static Map<String, Object> buildGenBodyToMap(CsGenRunVo genRunVo) {
        return BeanUtil.beanToMap(buildGenDto(genRunVo));
    }

    /**
     * 构建-任务信息-数据对象
     * @param genRunVo 生成脚本并运行-订阅-参数对象
     * @return 任务信息-数据对象
     */
    public static CsTask buildCsTask(CsGenRunVo genRunVo) {
        return CsTask.builder()
//                .userId(genRunVo.getUserId())
                .flightNo(genRunVo.getFlightNo())
                .date(genRunVo.getDate())
                .departure(genRunVo.getDeparture())
                .arrival(genRunVo.getArrival())
                .build();
    }

    /**
     * 构建-邮件-参数格式
     * @return 生成脚本-参数对象-str
     */
    public static String buildMailParams(String account, String pass, String date, String departure, String arrival) {
        // 出发机场 到达城市 两个参数 后要保留一个空格，供脚本使用
        return "["+ account + "," + pass +","+ date +","+ departure +" ,"+ arrival +" ]";
    }

}
